home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / musictex / older-versions / musictex.4991 / MUSICNFT.TEX < prev    next >
Text File  |  1994-01-25  |  26KB  |  740 lines

  1. %
  2. % This is MusicNFT from MusicTeX
  3. \message{Version 4.991 -- January 25th, 1994}%
  4. %
  5. % finding which class of fonts is normally used (cmxxx, dmxxx, dcxxx,...)
  6. \def\wordsplita#1#2#3.XX.{#1}%
  7. \def\wordsplitb#1#2#3.XX.{#2}%
  8. \rm
  9. \edef\fonthdg{\expandafter\wordsplita\fontname\the\font.XX.}%
  10. \edef\fonthdge{\expandafter\wordsplitb\fontname\the\font.XX.}%
  11.  %
  12. \font\cmmi=cmmi10 scaled \magstep1
  13. \font\cmbxbig=\fonthdg\fonthdge bx10 scaled \magstep2
  14. \font\cmbx=\fonthdg\fonthdge bx10 scaled \magstep1
  15. \font\cmbxsmall=\fonthdg\fonthdge bx10 
  16. \font\cmbxtiny=\fonthdg\fonthdge bx8
  17. \font\cmbxmicro=\fonthdg\fonthdge bx7
  18. \font\moyen=\fonthdg\fonthdge bx10 scaled \magstep1
  19. \font\cmex=cmex10
  20. \font\cmsy=cmsy10 scaled \magstep1
  21. \font\cmr=\fonthdg\fonthdge r10 scaled \magstep1
  22. \font\ttyeight=\fonthdg\fonthdge tt8
  23.  
  24.  
  25. \edef\catcodeat{\the\catcode`\@}\catcode`\@=11
  26. \edef\catcode@gt{\the\catcode`\>}\catcode`\>=12
  27. \edef\catcode@lt{\the\catcode`\<}\catcode`\<=12
  28.  
  29. %
  30. \let\@plainwlog=\wlog
  31. \def\wlog#1{}%
  32. %
  33. \font\musictwenty=musicn20
  34. \fontdimen35\musictwenty=0pt\relax
  35. \font\musicsixteen=musicn16
  36. \font\slurntwenty=slurn20
  37. \font\slurnsixteen=slurn16
  38. \font\musicthirteen=musicn13
  39. \font\musiceleven=musicn11
  40. \font\beamtwenty=beamn20
  41. \fontdimen50\beamtwenty=0pt\relax
  42. \font\beamsixteen=beamn16
  43. \font\beamthirteen=beamn13
  44. \font\beameleven=beamn11
  45. %
  46. \newif\ifcautionacc
  47. \cautionaccfalse
  48. %
  49. \def\q@u{\musicnfont\char33\hss}%
  50. \def\h@a{\musicnfont\char34\hss}%
  51. \def\w@h{\musicnfont\char35\hss}%
  52. \def\w@hq{\musicnfont\char 125\hss}%
  53. \def\s@bv{\musicnfont\char36\hss}%
  54. \def\b@rv{\musicnfont\char32\hss}%
  55. \def\c@upchar{39}%   offset to upper eighth hook
  56. \def\c@dnchar{44}%   offset to upper eighth hook
  57. %
  58. \def\musicxx{\musicnorfont}%
  59. \def\slurnxx{\slurnorfont}%
  60. \def\slurnfont{\slurnorfont}%
  61. %
  62. \def\set@normalnotesize{\def\beamfont{\beamnorfont}%
  63. \def\musicnfont{\musicnorfont}%
  64. \def\i@nterbeam{0.75\Interligne}%
  65. \def\b@alkthick{0.24\Interligne}}
  66. %
  67. \def\set@smallnotesize{\def\beamfont{\beamsmallfont}%
  68. \def\musicnfont{\musicsmallfont}%
  69. \def\i@nterbeam{0.6\Interligne}%
  70. \def\b@alkthick{0.192\Interligne}}
  71. %
  72. \def\set@tinynotesize{\def\beamfont{\beamtinyfont}%
  73. \def\musicnfont{\musictinyfont}%
  74. \def\i@nterbeam{0.48\Interligne}%
  75. \def\b@alkthick{0.1536\Interligne}}
  76. %
  77. \set@normalnotesize
  78. %
  79. \def\qu@raise{\z@}%
  80. \def\ha@raise{\z@}%
  81. \def\wh@raise{\z@}%
  82. \def\zwq#1{\getn@i{#1}\def\n@fon{\zwq}\def\n@sym{\w@hq}\g@zw}%
  83. \def\zsb#1{\getn@i{#1}\def\n@fon{\zsb}\def\n@sym{\s@bv}\g@zsb}% semi-breve
  84. \def\zbv#1{\getn@i{#1}\def\n@fon{\zbv}\def\n@sym{\b@rv}\g@zbv}% breve
  85. \def\g@zbv{\n@raiseq
  86.   \h@lines{\bv@width}\def\s@tem{\resetstem}\plap@symss\fi}%
  87. \def\g@zsb{\n@raiseq
  88.   \h@lines{\sb@width}\def\s@tem{\resetstem}\plap@symss\fi}%
  89. %
  90. \newbox\ch@box
  91. \newdimen\lthick
  92. \global\lthick=0.4pt
  93. %\newdimen\qn@width
  94. %\newdimen\hn@width
  95. %\newdimen\wn@width
  96. %\newdimen\sb@width
  97. %\newdimen\bv@width
  98. \newdimen\qd@skip
  99. \newdimen\hd@skip
  100. \newdimen\wd@skip
  101. %
  102. \newcount\musicsize
  103. %
  104. \def\musickeyfont{\ifdim\internote<0.76\Internote\musictinyfont
  105. \else\ifdim\internote<0.95\Internote\musicsmallfont
  106.      \else\musicnorfont
  107.      \fi
  108. \fi}%
  109. %
  110. \def\meterfont{\ifdim\internote<0.76\Internote\metersmallfont
  111. \else\ifdim\internote<0.95\Internote\meternorfont
  112.      \else\meterbigfont
  113.      \fi
  114. \fi}%
  115. %
  116. \def\pointfont{\ifdim\internote<0.76\Internote\metertinyfont
  117. \else\ifdim\internote<0.95\Internote\metersmallfont
  118.      \else\meternorfont
  119.      \fi
  120. \fi}%
  121. %
  122. \def\computespecifics{\ifnum\musicsize=0\relax\musicsize=20\relax\fi
  123. \ifnum\musicsize=20\relax
  124.   \def\ppff{\ppfftwenty}%
  125.   \def\beamnorfont{\beamtwenty}\def\musicnorfont{\musictwenty}%
  126.   \def\beamsmallfont{\beamsixteen}\def\musicsmallfont{\musicsixteen}%
  127.   \def\beamtinyfont{\beamthirteen}\def\musictinyfont{\musicthirteen}%
  128.   \def\meternorfont{\cmbx}\def\metersmallfont{\cmbxsmall}%
  129.   \def\metertinyfont{\cmbxtiny}\def\slurnorfont{\slurntwenty}%
  130.   \def\meterbigfont{\cmbxbig}%
  131. \else
  132.   \def\ppff{\ppffsixteen}%
  133.   \def\beamnorfont{\beamsixteen}\def\musicnorfont{\musicsixteen}%
  134.   \def\beamsmallfont{\beamthirteen}\def\musicsmallfont{\musicthirteen}%
  135.   \def\beamtinyfont{\beameleven}\def\musictinyfont{\musiceleven}%
  136.   \def\meternorfont{\cmbxsmall}\def\metersmallfont{\cmbxtiny}%
  137.   \def\metertinyfont{\cmbxmicro}\def\slurnorfont{\slurnsixteen}%
  138.   \def\meterbigfont{\cmbx}%
  139. \fi
  140. \Interligne=\musicsize pt\divide\Interligne by 4\relax
  141. \Internote=0.5\Interligne
  142. \interbeam=\i@nterbeam
  143. \setbox\ch@box=\hbox{\w@h}\wn@width=\wd\ch@box
  144. \setbox\ch@box=\hbox{\s@bv}\sb@width=\wd\ch@box
  145. \setbox\ch@box=\hbox{\b@rv}\bv@width=\wd\ch@box
  146. \setbox\ch@box=\hbox{\h@a}\hn@width=\wd\ch@box
  147. \setbox\ch@box=\hbox{\q@u}\qn@width=\wd\ch@box
  148. \qd@skip=\qn@width\advance\qd@skip by -\hlthick
  149. \hd@skip=\hn@width\advance\hd@skip by -\hlthick
  150. \wd@skip=\wn@width\advance\wd@skip by -\hlthick
  151. }%
  152. \def\normalnotesize{\set@normalnotesize\computespecifics
  153.   \def\currentsize{\normalnotesize}}
  154. \def\smallnotesize{\set@smallnotesize\computespecifics
  155.   \def\currentsize{\smallnotesize}}
  156. \def\tinynotesize{\set@tinynotesize\computespecifics
  157.   \def\currentsize{\tinynotesize}}
  158. %
  159. %\check
  160. %
  161. \def\s@oupir{{\musicnfont\char"3E}}%
  162. %
  163.  %\newdimen\c@height
  164. \newcount\c@mult
  165. %\check
  166. \def\d@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le haut
  167. \advance\c@mult by \c@upchar\d@crg}%
  168. \def\d@gru{\c@mult=12\relax\d@crg}% queue de croche barree vers le haut
  169. \def\d@crg{\setbox\ch@box=\rlap{\musicnfont\char\c@mult}\c@height=\ht\ch@box
  170. \global\advance\st@top by \c@height
  171. \global\advance\st@top by \internote
  172.   \ifdim\st@top>\st@bot
  173.     \maxst@top
  174.     \global\advance\st@bot by -\altportee
  175.     \global\advance\st@top by -\altportee
  176.     \kern\stem@skip\vrule height\st@top depth -\st@bot width \lthick
  177.     \advance\st@top by -\c@height\raise\st@top\box\ch@box
  178.     \kern -\lthick \kern-\stem@skip    
  179.   \fi\resetstem}%
  180. %\check
  181. \def\p@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le bas
  182. \advance\c@mult by \c@dnchar\p@crg}%
  183. \def\p@gru{\c@mult=13\relax\p@crg}% queue de croche barree vers la bas
  184. \def\p@crg{\setbox\ch@box=\rlap{\kern \hlthick\musicnfont
  185.     \char\c@mult}\c@height=\ht\ch@box
  186. \global\advance\st@bot by -\internote
  187. \global\advance\st@bot by -\c@height
  188. \ifdim\st@top>\st@bot
  189.  \minst@bot
  190.  \global\advance\st@bot by -\altportee
  191.  \global\advance\st@top by -\altportee
  192.  \raise\st@bot\box\ch@box
  193.  \vrule height\st@top depth -\st@bot width \lthick
  194.  \kern -\lthick
  195. \fi \resetstem}%
  196. %
  197. % grace notes (croches barrees)
  198. \def\grcu#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcu}\n@raiseq
  199.   \h@linesqn\global\stem@skip=\qd@skip
  200.   \def\s@tem{\d@gru}\pl@symssq\fi}%
  201. \def\grcl#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcl}\n@raiseq    
  202.   \h@linesqn\def\s@tem{\p@gru}\pl@symssq\fi}%
  203. %
  204. %\check
  205. \def\s@harp{\musicnfont\char"34}\def\sh@raise{\z@}%
  206. \def\f@lat{\musicnfont\char"32}\def\fl@raise{\z@}%
  207. \def\n@at{\musicnfont\char"36}\def\na@raise{\z@}%
  208. \def\ds@harp{\musicnfont\char"35}%
  209. \def\df@lat{\musicnfont\char"33}%
  210. %
  211. \def\smalln@at{\cau@left\musicnfont\char"7C\cau@right}%
  212. \def\smallf@lat{\cau@left\musicnfont\char"78\cau@right}%
  213. \def\smalls@harp{\cau@left\musicnfont\char"7A\cau@right}%
  214. \def\smallds@harp{\cau@left\musicnfont\char"7B\cau@right}%
  215. \def\smalldf@lat{\cau@left\musicnfont\char"79\cau@right}%
  216. \def\cau@left{\ifcautionacc\raise-.45\Interligne
  217.      \hbox{\ttyeight(\kern -\lthick}\fi} 
  218. \def\cau@right{\ifcautionacc\raise-.45\Interligne
  219.      \hbox{\ttyeight\kern -\lthick)\kern -.2\Interligne}\fi\cautionaccfalse} 
  220. %
  221. \def\n@rpl@lap{\global\n@raise=\z@\pl@llap}%
  222. \def\bigsh#1{\inhgetn@i{#1}\n@rpl@lap{\s@harp}}%
  223. \def\smallsh#1{\inhgetn@i{#1}\n@rpl@lap{\smalls@harp}}%
  224. \def\csh{\cautionacctrue\smallsh}%
  225. \def\uppersh#1{\zcharnote{#1}{\raise3\internote
  226. \hbox to \qn@width{\hss\smalls@harp\hss}}}%
  227. %
  228. \def\bigdsh#1{\inhgetn@i{#1}\n@rpl@lap{\ds@harp}}%
  229. \def\smalldsh#1{\inhgetn@i{#1}\n@rpl@lap{\smallds@harp}}%
  230. \def\cdsh{\cautionacctrue\smalldsh}%
  231. %
  232. \def\bigna#1{\inhgetn@i{#1}\n@rpl@lap{\n@at}}%
  233. \def\smallna#1{\inhgetn@i{#1}\n@rpl@lap{\smalln@at}}%
  234. \def\cna{\cautionacctrue\smallna}%
  235. \def\upperna#1{\zcharnote{#1}{\raise3\internote
  236. \hbox to \qn@width{\hss\smalln@at\hss}}}%
  237. %
  238. \def\bigfl#1{\inhgetn@i{#1}\n@rpl@lap{\f@lat}}%
  239. \def\smallfl#1{\inhgetn@i{#1}\n@rpl@lap{\smallf@lat}}%
  240. \def\cfl{\cautionacctrue\smallfl}%
  241. \def\upperfl#1{\zcharnote{#1}{\raise3\internote
  242. \hbox to \qn@width{\hss\smallf@lat\hss}}}%
  243. %
  244. \def\bigdfl#1{\inhgetn@i{#1}\n@rpl@lap{\df@lat}}%
  245. \def\smalldfl#1{\inhgetn@i{#1}\n@rpl@lap{\smalldf@lat}}%
  246. \def\cdfl{\cautionacctrue\smalldfl}
  247. %
  248. \def\na#1{\ifdim\small@test\bigna{#1}\else\smallna{#1}\fi}%
  249. \def\fl#1{\ifdim\small@test\bigfl{#1}\else\smallfl{#1}\fi}%
  250. \def\sh#1{\ifdim\small@test\bigsh{#1}\else\smallsh{#1}\fi}%
  251. \def\dfl#1{\ifdim\small@test\bigdfl{#1}\else\smalldfl{#1}\fi}%
  252. \def\dsh#1{\ifdim\small@test\bigdsh{#1}\else\smalldsh{#1}\fi}%
  253. %
  254. %\check
  255. \def\b@adjust{\ifdim\y@ii>2.1\q@antum
  256. \multiply\q@antum by 2\relax\advance\b@char by 1\relax\fi
  257. }%
  258. \newcount\b@char
  259. \def\b@alkdefs{\b@char=0\relax
  260. \ifnum \b@p>0\relax\b@char=\b@p\relax\multiply\b@char by 6\relax
  261.   \advance\b@char by -6\relax\ifnum\b@char>54\relax\b@char=54\relax\fi\fi
  262. \ifnum \b@p<0\relax\b@char=-\b@p\relax\multiply\b@char by 6\relax
  263.   \advance\b@char by 58\relax\ifnum\b@char>118\relax\b@char=118\relax\fi\fi
  264. \q@antum=60pt\divide\q@antum by 32\relax\b@adjust
  265. \b@adjust
  266. \b@adjust
  267. \b@adjust
  268. \b@adjust
  269. \chardef\b@alk=\b@char}%
  270. %\check
  271. \def\s@lopdefs{\q@antum=60pt\divide\q@antum by 32\relax \def\s@lope{0.0}\relax
  272. \ifnum \b@p=1\relax\def\s@lope{0.05}\fi
  273. \ifnum \b@p>1\relax\b@char=\b@p\relax\multiply\b@char by 5\relax
  274.   \ifnum\b@char>50\relax\b@char=50\relax\fi
  275.   \edef\s@lope{0.\the\b@char}\fi
  276. \ifnum \b@p=-1\relax\def\s@lope{-0.05}\fi
  277. \ifnum \b@p<-1\relax\b@char=-\b@p\relax\multiply\b@char by 5\relax
  278.   \ifnum\b@char>50\relax\b@char=50\relax\fi
  279.   \edef\s@lope{-0.\the\b@char}\fi
  280. }%
  281. %\check
  282. \def\p@outre{%    \y@ii : longueur,   \b@p : pente,  \y@i : altitude
  283. \ifnum \b@p=0\relax
  284.   \y@iii=\y@i\y@iv=\y@i
  285.   \advance\y@iii by -\b@alkthick
  286.   \advance\y@iv by \b@alkthick
  287.   \vrule height \y@iv depth -\y@iii  width \y@ii
  288. %  \raise  \y@i\hbox{\vrule height \b@alkthick depth \b@alkthick
  289. %      width \y@ii}
  290. \else\b@alkdefs\beamfont
  291.   \global\y@iv=\z@
  292.   \loop\ifdim\y@iv<\y@ii
  293.     {\y@v=\y@ii\advance\y@v by -\y@iv
  294.     \advance\y@v by -\q@antum
  295.     \y@iii=\y@i
  296.     \advance\y@iii by \s@lope\y@iv
  297.     \ifdim\y@v<\z@\advance\y@iii by \s@lope\y@v\hskip\y@v\fi
  298.     \raise\y@iii\hbox to \q@antum{\b@alk\hss}\global\advance\y@iv by \q@antum
  299.     }\repeat
  300. \fi
  301. }%
  302. %\check
  303. \def\clefdefa{\hbox to 3.2\Interligne{\musickeyfont
  304.      \kern -0.8\internote\hss\char"49\hss}}%
  305. \def\smallclefdefa{\hbox to 2.8\Interligne{\musickeyfont
  306.      \kern -0.64\internote\hss\char"4A\hss}}%
  307. %\check
  308. \def\clefdesol{\hbox to 3.2\Interligne{\musickeyfont
  309.      \kern -1.2\internote\hss\char"47\hss}}%
  310. \def\smallclefdesol{\hbox to 2.8\Interligne{\musickeyfont
  311. \kern -0.96\internote\hss\char"48\hss}}%
  312. %\check
  313. \def\clefdut{\hbox to 3.2\Interligne{\musickeyfont
  314.    \kern -0.8\internote\hss\char"4B\hss}}%
  315. \def\smallclefdut{\hbox to 2.8\Interligne{\musickeyfont
  316.    \kern -0.64\internote\hss\char"4C\hss}}%
  317. %
  318. \def\allabreve{{\kern \internote\musickeyfont\char"52}}%
  319. \def\meterC{{\kern \internote\musickeyfont\char"53}}%
  320. %
  321. \def\d@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"3F}}%
  322. \def\q@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"40}}%
  323. \def\h@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"41}}%
  324. \def\s@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"42}}%
  325. \def\p@orgue{\hbox{\kern -0.5\hn@width\musicnfont\char"50}}%
  326. \def\p@urgue{\hbox{\kern -0.5\hn@width\musicnfont\char"51}}%
  327. \def\trille#1{\hbox to #1{\leaders\hbox{\musicnfont\char"64}\hfill}}%
  328. \def\Trille#1{\hbox to #1{\it tr\leaders\hbox{\musicnfont\char"64}\hfill}}%
  329. %
  330. %
  331. % arpeges
  332. %
  333. \def\arpegesym#1{\hbox to \Interligne{\kern -1.2\Interligne
  334. \vbox to #1{\parindent=\z@
  335. \offinterlineskip\ifdim #1>4\Interligne\Arp@elem\fi\hrule
  336. \cleaders\arp@elem\vfill\kern -\interligne}\hss}}%
  337. \def\arp@elem{\vbox to \Interligne{\vss\musicnorfont\char"5A}}%
  338. \def\Arp@elem{\vbox to 4\Interligne{\vss\musicnorfont\char"5D}}%
  339. %
  340. \def\arpeggio#1#2{\zcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
  341. \musicnorfont\chardef\arp@el=\n@iii\relax\arp@el}\qsk}%
  342. \def\larpeggio#1#2{\lcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
  343. \musicnorfont\chardef\arp@el=\n@iii\relax\arp@el\kern -0.3\qn@width}\qsk}%
  344. %
  345. %
  346. % This skip aligns some ornaments which appear not to be centred precisely
  347. % on the notes
  348. \def\o@skp{\kern-.5\hd@skip}
  349. \def\mordant#1{\zcharnote{#1}{\musicnfont\char 89}}%
  350. \def\pince#1{\zcharnote{#1}{\musicnfont\char 87}}%
  351. \def\Pince#1{\zcharnote{#1}{\musicnfont\char 88}}%
  352. % \turn p      makes a turn             symbol at pitch p, causing no space
  353. % \backturn p  makes a backward turn    symbol at pitch p, causing no space
  354. % \coda p      makes a coda             ...
  355. % \segno p     makes the special "S"    ...
  356. \def\turn#1{\zcharnote{#1}{\o@skp\musicnfont\char"44}}
  357. \def\backturn#1{\zcharnote{#1}{\o@skp\musicnfont\char"43}}
  358. \def\coda#1{\zcharnote{#1}{\o@skp\musicnorfont\char"55}}
  359. \def\segno#1{\zcharnote{#1}{\o@skp\musicnorfont\char"56}}
  360. %
  361. \def\sforz#1{{\advance\transpose by -2\usf{#1}}}%
  362. \def\pz#1{{\advance\transpose by -2\upz{#1}}}%
  363. \def\ppz#1{\uppz{#1}}%
  364. \def\st#1{{\advance\transpose by -2\ust{#1}}}%
  365. %
  366. \def\usf#1{\zcharnote{#1}{\musicnfont\char 30}}%
  367. \def\lsf#1{\zcharnote{#1}{\musicnfont\char 31}}%
  368. \def\ust#1{\zcharnote{#1}{\musicnfont\char 26}}%
  369. \def\lst#1{\zcharnote{#1}{\musicnfont\char 27}}%
  370. \def\upz#1{\zcharnote{#1}{\musicnfont\char 24}}%
  371. \def\lpz#1{\zcharnote{#1}{\musicnfont\char 25}}%
  372. \def\uppz#1{\zcharnote{#1}{\musicnfont\char 28}}%
  373. \def\lppz#1{\zcharnote{#1}{\musicnfont\char 29}}%
  374. %
  375. % placement des accents au-dessus de poutres et non de tetes de notes
  376. \def\acc@balk{\global\stem@skip=\z@  %
  377. \y@ii=\b@z                     % a augmenter avec la pente
  378. \y@v=\locx@skip\advance\y@v by \stem@skip\advance\y@v by -\b@x
  379. \advance\y@ii by \s@lope\y@v
  380. \advance\y@ii by -\altportee
  381. \raise\y@ii\rlap{\kern\stem@skip\balk@accent}}%
  382. %\check
  383. \def\busf#1{\def\balk@accent{\musicnfont\char 30}\selectpoutre{#1}\acc@balk}%
  384. \def\blsf#1{\def\balk@accent{\musicnfont\char 31}\selectpoutre{#1}\acc@balk}%
  385. \def\bust#1{\def\balk@accent{\musicnfont\char 26}\selectpoutre{#1}\acc@balk}%
  386. \def\blst#1{\def\balk@accent{\musicnfont\char 27}\selectpoutre{#1}\acc@balk}%
  387. \def\bupz#1{\def\balk@accent{\musicnfont\char 24}\selectpoutre{#1}\acc@balk}%
  388. \def\blpz#1{\def\balk@accent{\musicnfont\char 25}\selectpoutre{#1}\acc@balk}%
  389. \def\buppz#1{\def\balk@accent{\musicnfont\char 28}\selectpoutre{#1}\acc@balk}%
  390. \def\blppz#1{\def\balk@accent{\musicnfont\char 29}\selectpoutre{#1}\acc@balk}%
  391. %
  392. % soufflets crescendo et decrescendo
  393. %
  394. \def\dimin{{\musicnorfont\char"10}}%
  395. \def\Dimin{{\musicnorfont\char"11}}%
  396. \def\DImin{{\musicnorfont\char"12}}%
  397. \def\DIMin{{\musicnorfont\char"13}}%
  398. \def\cresc{{\musicnorfont\char"14}}%
  399. \def\Cresc{{\musicnorfont\char"15}}%
  400. \def\CResc{{\musicnorfont\char"16}}%
  401. \def\CREsc{{\musicnorfont\char"17}}%
  402. %
  403. % colons for repeats (:| |: :||:)
  404. %
  405. %\check
  406. \def\w@coli{\selectinstr{\p@loop\raise\altportee
  407.   \hbox to \z@{\hss\musickeyfont\char 126\hss}\n@portee\repeat}}%
  408. %
  409. % long pauses
  410. %
  411. \def\PAuse{\hbox to \noteskip{\musicnorfont\char"3A\hss}\advance\locx@skip
  412.  by \noteskip}%
  413. \def\PAUSe{\hbox to \noteskip{\musicnorfont\char"3B\hss}\advance\locx@skip
  414.  by \noteskip}%
  415. %
  416. % special song system left begins
  417. %
  418. \def\type@songsymbols{\raise\lowersongalt\llap{\musicnorfont\char 15}%
  419. \advance\lowersongalt by \uppersongalt
  420. \advance\lowersongalt by -\hlthick
  421. \raise\lowersongalt\llap{\musicnorfont\char 14}}
  422. %
  423. %
  424. % horizontal upper slur offset by #2 noteheads, total width #1
  425. %
  426. \def\h@uslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width
  427. \global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs
  428. \ifdim\wd\ch@box>\y@v
  429.   \global\n@iii=0\relax
  430.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  431.   \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax
  432.   \repeat
  433.   \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}%
  434. \else
  435.   \global\n@iii=79\relax
  436.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  437.   \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax
  438.   \repeat
  439.   \hbox to #1{\kern #2\hn@width\y@iv=\ht\ch@box\y@iii=-\ht\ch@box
  440.   \advance\y@iii by \t@y
  441.   \slurnorfont\char\n@iii
  442.   \leaders\hrule height \y@iv depth \y@iii\hfill
  443.   \advance\n@iii by 16\relax \char\n@iii}%
  444. \fi}
  445. %
  446. % horizontal lower slur offset by #2 noteheads, total width #1
  447. %
  448. \def\h@dslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width
  449. \global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs
  450. \ifdim\wd\ch@box>\y@v
  451.   \global\n@iii=32\relax
  452.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  453.   \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax
  454.   \repeat
  455.   \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}%
  456. \else
  457.   \global\n@iii=111\relax
  458.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  459.   \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax
  460.   \repeat
  461.   \hbox to #1{\kern #2\hn@width\y@iv=\dp\ch@box\y@iii=-\dp\ch@box
  462.   \advance\y@iii by \t@y
  463.   \slurnorfont\char\n@iii
  464.   \leaders\hrule height \y@iii depth \y@iv\hfill
  465.   \advance\n@iii by 16\relax \char\n@iii}%
  466. \fi}
  467. %
  468. % sames without offsets
  469. %
  470. \def\hdslur#1{\h@dslur {#1}0}
  471. \def\huslur#1{\h@uslur {#1}0}
  472. %
  473. % noter un debut de tenue
  474. %
  475. \def\ITenu#1{\selecttenue{#1}\I@tenu{70}}%
  476. \def\Ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  477. \I@tenu{70}{#2}}}%
  478. \def\Itenu#1{\selecttenue{#1}\I@tenu{66}}%
  479. \def\ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  480. \I@tenu{66}{#2}}}%
  481. \def\ITenl#1{\selecttenue{#1}\I@tenl{102}}%
  482. \def\Ilegl#1#2{\selecttenue{#1}\advance\locx@skip by -1.5\qn@width
  483. \I@tenl{102}{#2}\advance\locx@skip by 1.5\qn@width}%
  484. \def\Itenl#1{\selecttenue{#1}\I@tenl{98}}%
  485. \def\ilegl#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  486. \I@tenl{98}{#2}}}%
  487. %
  488. \def\I@tenall{\global\t@s=1\relax % etat en cours
  489.   \global\t@x=\locx@skip
  490.   \global\advance\t@x by 0.8\qd@skip
  491.   \global\t@y= 0.15\Interligne
  492.   \pl@base\global\t@z=\y@i\global\advance\t@z by\altportee
  493.   \setbox\ch@box=\hbox{\L@slur}}%
  494. %
  495. \def\I@tenu#1#2{\global\t@p=1\relax % sens=1
  496.   \global\t@w=#1\relax
  497.   \inhgetn@i{#2}%
  498.   \I@tenall
  499.   \global\advance\t@z by \ht\ch@box
  500.   \global\advance\t@z by 0.24\Interligne
  501.   \global\advance\t@z by -\t@y
  502.   \up@tenbox}%
  503. %
  504. \def\I@tenl#1#2{\global\t@p=-1\relax % sens= -1
  505.   \global\t@w=#1\relax
  506.   \inhgetn@i{#2}%
  507.   \I@tenall
  508.   \global\advance\t@z by -\dp\ch@box
  509.   \global\advance\t@z by -0.24\Interligne
  510.   \up@tenbox}%
  511.  
  512. \def\Invertslur#1{\selecttenue{#1}\global\t@p=-\t@p
  513. \ifnum\t@w>63\relax
  514.  \ifnum\t@w<96\global\advance\t@w by 32\relax
  515.  \else\global\advance\t@w by -32\fi
  516. \fi}
  517.  
  518.  
  519. %
  520. %\check
  521. %
  522. \def\Tten{\tten}%
  523. \def\Tleg{\tleg}%
  524. %  
  525. \def\t@ten{\y@i=\t@z\advance\y@i by -\altportee
  526. \y@ii=\locx@skip\advance\y@ii by -\t@x
  527. \ifnum\t@w=0\relax\else\advance\y@ii by 0.4\qd@skip\fi
  528. \ifnum\t@p>0\relax
  529.   \ifnum\t@s=2\relax
  530.     \raise\y@i\llap{\ifnum\t@w=0\relax
  531.                       \up@rleg\else
  532.                       \Up@rleg\kern -0.2\qd@skip\fi}%
  533.   \else
  534.     \raise\y@i\llap{\ifnum\t@w=0\relax
  535.                       \up@leg\else
  536.                       \Up@leg\kern -0.2\qd@skip\fi}%
  537.   \fi
  538. \else
  539.   \ifnum\t@s=2\relax
  540.     \raise\y@i\llap{\ifnum\t@w=0\relax
  541.                       \lo@rleg\else
  542.                       \Lo@rleg\kern -0.2\qd@skip\fi}%
  543.   \else
  544.     \raise\y@i\llap{\ifnum\t@w=0\relax
  545.                       \lo@leg\else
  546.                       \Lo@leg\kern -0.2\qd@skip\fi}%
  547.   \fi
  548. \fi
  549. \global\t@w=0\relax
  550. \global\t@s=0\relax
  551. \@uptenubox}%
  552. %
  553. %
  554. \def\L@slur{\slurnorfont\char\t@w}%
  555. \def\R@slur{\global\advance\t@w by 16\slurnorfont\char\t@w}%
  556. \newdimen\slur@off
  557. \newdimen\slur@maxlen
  558. %
  559. \def\leg@hrule{\leaders\hrule height \t@y\hfill}%
  560. %
  561. % complete slur of length #1 (up and down)
  562. \def\Up@leg{%    longueur \y@ii
  563. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box 
  564.   \advance\slur@off by -\t@y
  565.   \ifdim \y@ii>2\wd\ch@box
  566.     \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}%
  567.   \else
  568.     \raise -\slur@off\hbox{\huslur{\y@ii}}%
  569.   \fi}}%
  570. %
  571. \def\Lo@leg{%    longueur \y@ii
  572. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box 
  573.   \advance\slur@off by -0.3\t@y
  574.   \ifdim \y@ii>2\wd\ch@box
  575.     \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}%
  576.   \else
  577.     \raise -\slur@off\hbox{\hdslur{\y@ii}}%
  578.   \fi}}%
  579. %
  580. % slur termination of length #1 (up and down)
  581. \def\Up@rleg{%    longueur \y@ii
  582. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box %
  583.   \advance\slur@off by -\t@y
  584.   \ifdim \y@ii>\wd\ch@box\leg@hrule
  585.   \else\hss\fi  \raise -\slur@off\hbox{\R@slur}}}%
  586. %
  587. \def\Lo@rleg{%    longueur \y@ii
  588. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box %   
  589.   \advance\slur@off by -0.3\t@y
  590.   \ifdim \y@ii>\wd\ch@box\leg@hrule
  591.   \else\hss\fi  \raise -\slur@off\hbox{\R@slur}}}%
  592. %
  593. %\check
  594. %
  595. % slur beginning (left) (up and down)
  596. \def\Up@les{%    longueur \y@ii
  597. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box
  598.   \advance\slur@off by -\t@y
  599.   \UpLo@les}}%
  600. %
  601. %\check
  602. %
  603. \def\Lo@les{%    longueur \y@ii
  604. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box
  605.   \advance\slur@off by -0.3\t@y
  606.   \UpLo@les}}%
  607. %
  608. %\check
  609. %
  610. \def\UpLo@les{\raise -\slur@off\hbox{\L@slur}%
  611.   \advance\y@ii by -\wd\ch@box
  612.   \ifdim \y@ii>\z@\leg@hrule
  613.   \else\hss
  614. %    \ifdim\y@ii<-.8\p@ \vrule height 1cm\fi
  615.   \fi}%
  616. %\check
  617. %
  618. \def\c@ten{%\rlap{\vrule height 1cm}
  619.      \y@ii=\x@skip\advance\y@ii by -\t@x
  620.      \global\t@x=-.8\p@  %<--
  621.      \ifnum\t@s=1\relax
  622.        \ifnum\t@w=0\relax
  623.            \ifnum\t@p>0\relax
  624.            \raise\t@z\llap{\up@les}\else
  625.            \raise\t@z\llap{\lo@les}\fi
  626.        \else
  627.            \ifnum\t@p>0\relax
  628.            \raise\t@z\llap{\Up@les}\else
  629.            \raise\t@z\llap{\Lo@les}\fi
  630.        \fi    
  631.      \else
  632.        \ifnum\t@s=2\relax
  633.          \slur@off=\t@z
  634.          \advance\slur@off by \t@y
  635. %         \advance\slur@off by 3\p@
  636.          \kern -\y@ii\vrule height \slur@off depth -\t@z width \y@ii
  637.        \fi
  638.      \fi
  639.      \global\t@s=2\relax            
  640. }%
  641. %
  642. \def\n@skmb{\nobreak\global\slur@maxlen=\z@
  643. % compute the maximum length of slurs to be handled
  644.   \ten@loop
  645.      \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur
  646.                            \else\L@slur\fi}\ifdim\slur@maxlen<\wd\ch@box
  647.      \global\slur@maxlen=\wd\ch@box\fi
  648.      \global\advance\n@l by 1\relax
  649.   \repeat
  650. % compute the maximum excess length of beginning slurs  
  651.   \global\slur@off=\z@
  652.   \ten@loop
  653.      \y@ii=\x@skip\advance\y@ii by \n@skip\advance\y@ii by -\t@x
  654.      \advance\y@ii by -\slur@maxlen
  655.      % \y@ii is the length that will be given to \c@ten for that slur/tie
  656.      % assuming \slur@maxlen left offset...
  657.      \ifnum\t@s=1\relax
  658.        \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur\else\L@slur\fi}%
  659.            {\advance\y@ii by -\wd\ch@box
  660.             \ifdim\y@ii<\slur@off \global\slur@off=\y@ii\fi}%
  661.      \fi
  662.      \global\advance\n@l by 1\relax
  663.   \repeat
  664.   \global\advance\slur@maxlen by \slur@off
  665. %
  666.   \nobreak\global\advance\n@skip by -\slur@maxlen}%
  667. \def\skip@b{\hskip \slur@maxlen
  668.    \global\advance\x@skip by\slur@maxlen}% %
  669.  
  670.  %
  671. %
  672. %\check
  673. %
  674. % symboles slurn20 des liaisons et tenues
  675. %
  676. \newcount\t@wi
  677. \newcount\t@wii
  678. \newcount\t@wiii
  679. \newcount\t@wiv
  680. \newcount\t@wv
  681. \newcount\t@wvi
  682. %
  683. \let\wlog=\@plainwlog
  684. %
  685. \def\k@ii{\fontdimen 8\musictwenty}
  686. \def\k@iii{\fontdimen 9\musictwenty}
  687. \def\k@iiii{\fontdimen 10\musictwenty}
  688. \def\k@iiv{\fontdimen 11\musictwenty}
  689. \def\k@iv{\fontdimen 12\musictwenty}
  690. \def\k@ivi{\fontdimen 13\musictwenty}
  691. \def\k@ivii{\fontdimen 14\musictwenty}
  692. \def\k@iviii{\fontdimen 15\musictwenty}
  693. \def\k@iix{\fontdimen 16\musictwenty}
  694. %
  695. \def\internotei{\fontdimen 17\musictwenty}
  696. \def\internoteii{\fontdimen 18\musictwenty}
  697. \def\internoteiii{\fontdimen 19\musictwenty}
  698. \def\internoteiv{\fontdimen 20\musictwenty}
  699. \def\internotev{\fontdimen 21\musictwenty}
  700. \def\internotevi{\fontdimen 22\musictwenty}
  701. \def\internotevii{\fontdimen 23\musictwenty}
  702. \def\internoteviii{\fontdimen 24\musictwenty}
  703. \def\internoteix{\fontdimen 25\musictwenty}
  704. \def\c@height{\fontdimen 26\musictwenty}
  705. %
  706. \def\qn@width{\fontdimen 27\musictwenty}
  707. \def\hn@width{\fontdimen 28\musictwenty}
  708. \def\wn@width{\fontdimen 29\musictwenty}
  709. \def\sb@width{\fontdimen 30\musictwenty}
  710. \def\bv@width{\fontdimen 31\musictwenty}
  711. %
  712. \def\clef@skip{\fontdimen 28\beamtwenty}
  713. \def\nullthick{\fontdimen 29\beamtwenty}
  714. \def\bbbb@xi{\fontdimen 30\beamtwenty}
  715. \def\bbbb@xii{\fontdimen 31\beamtwenty}
  716. \def\bbbb@xiii{\fontdimen 32\beamtwenty}
  717. \def\bbbb@xiv{\fontdimen 33\beamtwenty}
  718. \def\bbbb@xv{\fontdimen 34\beamtwenty}
  719. \def\bbbb@xvi{\fontdimen 35\beamtwenty}
  720. \def\bbbb@xvii{\fontdimen 36\beamtwenty}
  721. \def\bbbb@xviii{\fontdimen 37\beamtwenty}
  722. \def\bbbb@xix{\fontdimen 38\beamtwenty}
  723. \def\bbbb@xx{\fontdimen 39\beamtwenty}
  724. %
  725. \def\bbbbb@xi{\fontdimen 40\beamtwenty}
  726. \def\bbbbb@xii{\fontdimen 41\beamtwenty}
  727. \def\bbbbb@xiii{\fontdimen 42\beamtwenty}
  728. \def\bbbbb@xiv{\fontdimen 43\beamtwenty}
  729. \def\bbbbb@xv{\fontdimen 44\beamtwenty}
  730. \def\bbbbb@xvi{\fontdimen 45\beamtwenty}
  731. \def\bbbbb@xvii{\fontdimen 46\beamtwenty}
  732. \def\bbbbb@xviii{\fontdimen 47\beamtwenty}
  733. \def\bbbbb@xix{\fontdimen 48\beamtwenty}
  734. \def\bbbbb@xx{\fontdimen 49\beamtwenty}
  735.  
  736. \catcode`\>=\catcode@gt
  737. \catcode`\<=\catcode@lt
  738. \catcode`\@=\catcodeat
  739.  
  740.